/***
 * 力扣（LeetCode） NO.53 最大子序列和
 * 题目描述： 给定一个整数数组 nums ，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
 *
 * 链接：https://leetcode-cn.com/problems/maximum-subarray
 *
 */

/**
 * 示例 1：
 * 输入：nums = [-2,1,-3,4,-1,2,1,-5,4]
 * 输出：6
 * 解释：连续子数组 [4,-1,2,1] 的和最大，为 6 。

 * 示例 2：
 * 输入：nums = [1]
 * 输出：1

 * 示例 3：
 * 输入：nums = [0]
 * 输出：0

 * 示例 4：
 * 输入：nums = [-1]
 * 输出：-1

 * 示例 5：
 * 输入：nums = [-100000]
 * 输出：-100000
 *
 *
 */

#include "stdio.h"

int maxSubArray(int* nums, int numsSize){
    if(numsSize <= 0)    return 0;

    int sum = nums[0];
    int add = nums[0];

    for(int i = 1;i < numsSize; i++){
        if(sum > 0){
            sum = sum + nums[i];
        }else{
            sum = nums[i];
        }

        if(sum > add){
            add = sum;
        }
    }
    return add;
}

void main(){
    int nums[] = {-2,1,-3,4,-1,2,1,-5,4};
    printf("%d",maxSubArray(nums,9));
}